package com.qingfeng.core.mapper;

import com.qingfeng.core.config.database.BaseMapper;
import com.qingfeng.core.entity.Permission;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @description: 权限mapper类
 * @author:LWY
 * @date: 2017/10/16 17:17
 * @modified:
 */
public interface PermissionMapper extends BaseMapper<Permission> {

    /**
     * 查询角色所有的权限
     *
     * @param role_id 角色id
     * @return
     */
    Set<Permission> byRole(String role_id);

    /**
     * 根据权限菜单类型和用户获取权限菜单
     *
     * @param permission_type 类型（0：菜单，1：按钮）
     * @param userinfo_id     用户id
     * @return
     */
    List<Permission> byTypeAndUserinfo(Integer permission_type, String userinfo_id);


    /**
     * 根据父菜单和用户获取权限按钮
     *
     * @param p_id        父菜单id
     * @param userinfo_id 用户id
     * @return
     */
    List<Permission> getButtonByPidAndUserinfo(String p_id, String userinfo_id);


    /**
     * 删除权限及所有子权限
     *
     * @param id
     */
    int del(String id);

    /**
     * 删除权限关联角色
     *
     * @param id 权限id
     */
    int delRole(String id);

    /**
     * 获取所有权限并且标记某角色有哪些权限
     *
     * @param role_id
     * @return
     */
    List<Map> forRole(String role_id);
}
